﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model.Contratos;
using Infraestrutura.Entidades;

namespace Model.Refeicoes
{
    public class Refeicao : Entidade
    {

        private RefeicaoContrato _refeicaoContratada;
        private DateTime _dataRefeicao;
        private Decimal? _totalVendasPrevisto;
        private Decimal? _totalCustosPrevisto;
        private Decimal? _totalVendasEfectivo;
        private Decimal? _totalCustosEfectivo;
        private Decimal? _racioMateriasPrimasPrevisto;
        private Decimal? _racioMateriasPrimasEfectivo;
        private String _codEstadoRefeicao;
        private Int64? _numeroRequisicao;
        private IList<RefeicaoOpcao> _opcoesRefeicao;
        private IList<RefeicaoUnidade> _unidadeRefeicao;


        public RefeicaoContrato RefeicaoContratada
        {
            get { return _refeicaoContratada; }
            set { _refeicaoContratada = value; }
        }

        public DateTime DataRefeicao
        {
            get { return _dataRefeicao; }
            set { _dataRefeicao = value; }
        }

        public Decimal? TotalVendasPrevisto
        {
            get { return _totalVendasPrevisto; }
            set { _totalVendasPrevisto = value; }
        }
        
        public Decimal? TotalCustosPrevisto
        {
            get { return _totalCustosPrevisto; }
            set { _totalCustosPrevisto = value; }
        }

        public Decimal? TotalVendasEfectivo
        {
            get { return _totalVendasEfectivo; }
            set { _totalVendasEfectivo = value; }
        }

        public Decimal? TotalCustosEfectivo
        {
            get { return _totalCustosEfectivo; }
            set { _totalCustosEfectivo = value; }
        }

        public Decimal? RacioMateriasPrimasPrevisto
        {
            get { return _racioMateriasPrimasPrevisto; }
            set { _racioMateriasPrimasPrevisto = value; }
        }
        
        public Decimal? RacioMateriasPrimasEfectivo
        {
            get { return _racioMateriasPrimasEfectivo; }
            set { _racioMateriasPrimasEfectivo = value; }
        }
        
        public String CodEstadoRefeicao
        {
            get { return _codEstadoRefeicao; }
            set { _codEstadoRefeicao = value; }
        }

        public Int64? NumeroRequisicao
        {
            get { return _numeroRequisicao; }
            set { _numeroRequisicao = value; }
        }

        public IList<RefeicaoOpcao> OpcoesRefeicao
        {
            get { return _opcoesRefeicao; }
            set { _opcoesRefeicao = value; }
        }

        public IList<RefeicaoUnidade> UnidadeRefeicao
        {
            get { return _unidadeRefeicao; }
            set { _unidadeRefeicao = value; }
        }


    }

    public class EstadoRefeicao
    {
        public const String Aberta = "abr"; // quando é aberta, primeiro estado
        public const String Completa = "cmp"; // quando está toda preenchida com os produtos encomendados mas ainda não foi emitida a requisicao
        public const String RequisicaoEmitida = "req"; //quando é emitida a requisicao
        public const String Fechada = "fch"; // depois de emitida a requisição e indicado o número de refeições vendidas
    }
}
